home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / GNU_C++ / LIB / SRC / GEMLIB38.LZH / v_output.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-07-10  |  6.1 KB  |  312 lines

  1. /*
  2.  *    Vdi output functions library interface
  3.  *
  4.  *    ++jrb    bammi@cadence.com
  5.  *    modified: mj -- ntomczak@vm.ucs.ualberta.ca
  6.  *
  7.  * -------------------------------------
  8.  * 12.07.97 cf (felsch@tu-harburg.de)
  9.  *        modified for new control arrays
  10.  *
  11.  * 15.06.98
  12.  *        - restructured, new bindings for all functions
  13.  */
  14. #include "gem.h"
  15.  
  16.  
  17. void v_arc(int handle, int x, int y, int radius, int begang, int endang)
  18. {
  19.     vdi_intin[0] = begang;
  20.     vdi_intin[1] = endang;
  21.     vdi_ptsin[0] = x;
  22.     vdi_ptsin[1] = y;
  23.     vdi_ptsin[2] = 0;
  24.     vdi_ptsin[3] = 0;
  25.     vdi_ptsin[4] = 0;
  26.     vdi_ptsin[5] = 0;
  27.     vdi_ptsin[6] = radius;
  28.     vdi_ptsin[7] = 0;
  29.     
  30.     vdi_control[0] = 11;
  31.     vdi_control[1] = 4;
  32.     vdi_control[3] = 2;
  33.     vdi_control[5] = 2;
  34.     vdi_control[6] = handle;
  35.     vdi(&vdi_params);
  36. }
  37.  
  38. void v_bar(int handle, int pxyarray[])
  39. {
  40.     register int i;
  41.      
  42.     for(i = 0; i < 4; i++)
  43.         vdi_ptsin[i] = pxyarray[i];
  44.  
  45.     vdi_control[0] = 11;
  46.     vdi_control[1] = 2;
  47.     vdi_control[3] = 0;
  48.     vdi_control[5] = 1;
  49.     vdi_control[6] = handle;
  50.     vdi(&vdi_params);
  51. }
  52.  
  53. void v_cellarray(int handle, int pxyarray[], int row_length, int elements, int nrows, int write_mode, int colarray[])
  54. {
  55.     short *wptr, *end;
  56.     
  57.     wptr = vdi_intin;
  58.     end = wptr + (short)nrows * (short)elements;
  59.     while (wptr < end)
  60.         *wptr++ = *colarray++;
  61.  
  62.     vdi_ptsin[0] = pxyarray[0];
  63.     vdi_ptsin[1] = pxyarray[1];
  64.     vdi_ptsin[2] = pxyarray[2];
  65.     vdi_ptsin[3] = pxyarray[3];
  66.      
  67.     vdi_control[0] = 10;
  68.     vdi_control[1] = 2;
  69.     vdi_control[3] = (int)(wptr - vdi_intin);
  70.     vdi_control[6] = handle;
  71.     vdi_control[7] = row_length;
  72.     vdi_control[8] = elements;
  73.     vdi_control[9] = nrows;
  74.     vdi_control[10] = write_mode;
  75.     vdi(&vdi_params);
  76. }
  77.  
  78. void v_circle(int handle, int x, int y, int radius)
  79. {
  80.     vdi_ptsin[0] = x;
  81.     vdi_ptsin[1] = y;
  82.     vdi_ptsin[2] = 0;
  83.     vdi_ptsin[3] = 0;
  84.     vdi_ptsin[4] = radius;
  85.     vdi_ptsin[5] = 0;
  86.     
  87.     vdi_control[0] = 11;
  88.     vdi_control[1] = 3;
  89.     vdi_control[3] = 0;
  90.     vdi_control[5] = 4;
  91.     vdi_control[6] = handle;
  92.     vdi(&vdi_params);
  93. }
  94.  
  95. void v_contourfill(int handle, int x, int y, int index)
  96. {
  97.     vdi_intin[0] = index;
  98.     vdi_ptsin[0] = x;
  99.     vdi_ptsin[1] = y;
  100.     vdi_control[0] = 103;
  101.     vdi_control[1] = 1;
  102.     vdi_control[3] = 1;
  103.     vdi_control[6] = handle;
  104.     vdi(&vdi_params);
  105. }
  106.  
  107. void v_ellarc(int handle, int x, int y, int xrad, int yrad, int begang, int endang)
  108. {
  109.     vdi_intin[0] = begang;
  110.     vdi_intin[1] = endang;
  111.     vdi_ptsin[0] = x;
  112.     vdi_ptsin[1] = y;
  113.     vdi_ptsin[2] = xrad;
  114.     vdi_ptsin[3] = yrad;
  115.     
  116.     vdi_control[0] = 11;
  117.     vdi_control[1] = 2;
  118.     vdi_control[3] = 2;
  119.     vdi_control[5] = 6;
  120.     vdi_control[6] = handle;
  121.     vdi(&vdi_params);
  122. }
  123.  
  124. void v_ellipse(int handle, int x, int y, int xrad, int yrad)
  125. {
  126.     vdi_ptsin[0] = x;
  127.     vdi_ptsin[1] = y;
  128.     vdi_ptsin[2] = xrad;
  129.     vdi_ptsin[3] = yrad;
  130.     vdi_control[0] = 11;
  131.     vdi_control[1] = 2;
  132.     vdi_control[3] = 0;
  133.     vdi_control[5] = 5;
  134.     vdi_control[6] = handle;
  135.     vdi(&vdi_params);
  136. }
  137.  
  138. void v_ellpie(int handle, int x, int y, int xrad, int yrad, int begang, int endang)
  139. {
  140.     vdi_intin[0] = begang;
  141.     vdi_intin[1] = endang;
  142.     vdi_ptsin[0] = x;
  143.     vdi_ptsin[1] = y;
  144.     vdi_ptsin[2] = xrad;
  145.     vdi_ptsin[3] = yrad;
  146.     
  147.     vdi_control[0] = 11;
  148.     vdi_control[1] = 2;
  149.     vdi_control[3] = 2;
  150.     vdi_control[5] = 7;
  151.     vdi_control[6] = handle;
  152.     vdi(&vdi_params);
  153. }
  154.  
  155. void v_fillarea(int handle, int count, int pxyarray[])
  156. {
  157.     register short i;
  158.     register short *pts = &vdi_ptsin[0];
  159.     register int    *pxy = &pxyarray[0];
  160.     
  161.     for(i = count; i != 0; i-- )
  162.     {
  163.         *pts++ = *pxy++;
  164.         *pts++ = *pxy++;
  165.     }
  166.  
  167.     vdi_control[0] = 9;
  168.     vdi_control[1] = count;
  169.     vdi_control[3] = 0;
  170.     vdi_control[6] = handle;
  171.     vdi(&vdi_params);
  172. }
  173.  
  174. void v_gtext(int handle, int x, int y, char *str) 
  175. {
  176.     short i;
  177.     
  178.     i = vdi_str2array(str, vdi_intin);
  179.     vdi_ptsin[0] = x;
  180.     vdi_ptsin[1] = y;
  181.     
  182.     vdi_control[0] = 8;
  183.     vdi_control[1] = 2;
  184.     vdi_control[3] = i;
  185.     vdi_control[6] = handle;
  186.     vdi(&vdi_params);
  187. }
  188.  
  189. void v_justified(int handle, int x, int y, char *str, int len, int word_space, int char_space)
  190. {
  191.     short i;
  192.     
  193.     vdi_intin[0] = word_space;
  194.     vdi_intin[1] = char_space;
  195.     i = vdi_str2array(str, vdi_intin+2);
  196.  
  197.     vdi_ptsin[0] = x;
  198.     vdi_ptsin[1] = y;
  199.     vdi_ptsin[2] = len;
  200.     vdi_ptsin[3] = 0;
  201.     
  202.     vdi_control[0] = 11;
  203.     vdi_control[1] = 2;
  204.     vdi_control[3] = i + 2;
  205.     vdi_control[5] = 10;
  206.     vdi_control[6] = handle;
  207.     vdi(&vdi_params);
  208. }
  209.  
  210. void v_pieslice(int handle, int x, int y, int radius, int begang, int endang)
  211. {
  212.     vdi_intin[0] = begang;
  213.     vdi_intin[1] = endang;
  214.     vdi_ptsin[0] = x;
  215.     vdi_ptsin[1] = y;
  216.     vdi_ptsin[2] = 0;
  217.     vdi_ptsin[3] = 0;
  218.     vdi_ptsin[4] = 0;
  219.     vdi_ptsin[5] = 0;
  220.     vdi_ptsin[6] = radius;
  221.     vdi_ptsin[7] = 0;
  222.     
  223.     vdi_control[0] = 11;
  224.     vdi_control[1] = 4;
  225.     vdi_control[3] = 2;
  226.     vdi_control[5] = 3;
  227.     vdi_control[6] = handle;
  228.     vdi(&vdi_params);
  229. }
  230.  
  231. void v_pline(int handle, int count, int pxyarray[])
  232. {
  233.     register short    i;
  234.     register short *pts = &vdi_ptsin[0];
  235.     register int    *pxy = &pxyarray[0];
  236.     
  237.     for(i = count; i != 0; i-- )
  238.     {
  239.         *pts++ = *pxy++;
  240.         *pts++ = *pxy++;
  241.     }
  242.  
  243.     vdi_control[0] = 6;
  244.     vdi_control[1] = count;
  245.     vdi_control[3] = 0;
  246.     vdi_control[6] = handle;
  247.     vdi(&vdi_params);
  248. }
  249.  
  250. void v_pmarker(int handle, int count, int pxyarray[])
  251. {
  252.     register short i;
  253.     register short *pts = &vdi_ptsin[0];
  254.     register int    *pxy = &pxyarray[0];
  255.  
  256.     for(i = count; i != 0; i-- )
  257.     {
  258.         *pts++ = *pxy++;
  259.         *pts++ = *pxy++;
  260.     }
  261.  
  262.     vdi_control[0] = 7;
  263.     vdi_control[1] = count;
  264.     vdi_control[3] = 0;
  265.     vdi_control[6] = handle;
  266.     vdi(&vdi_params);
  267. }
  268.  
  269. void v_rbox(int handle, int pxyarray[])
  270. {
  271.     register int i;
  272.     
  273.     for(i = 0; i < 4; i++)
  274.         vdi_ptsin[i] = pxyarray[i];
  275.     
  276.     vdi_control[0] = 11;
  277.     vdi_control[1] = 4;
  278.     vdi_control[3] = 0;
  279.     vdi_control[5] = 8;
  280.     vdi_control[6] = handle;
  281.     vdi(&vdi_params);
  282. }
  283.  
  284. void v_rfbox(int handle, int pxyarray[])
  285. {
  286.     register int i;
  287.     
  288.     for(i = 0; i < 4; i++)
  289.         vdi_ptsin[i] = pxyarray[i];
  290.     
  291.     vdi_control[0] = 11;
  292.     vdi_control[1] = 4;
  293.     vdi_control[3] = 0;
  294.     vdi_control[5] = 9;
  295.     vdi_control[6] = handle;
  296.     vdi(&vdi_params);
  297. }
  298.  
  299. void vr_recfl(int handle, int pxyarray[])
  300. {
  301.     register int i;
  302.     
  303.     for(i = 0; i < 4; i++)
  304.         vdi_ptsin[i] = pxyarray[i];
  305.  
  306.     vdi_control[0] = 114;
  307.     vdi_control[1] = 4;
  308.     vdi_control[3] = 0;
  309.     vdi_control[6] = handle;
  310.     vdi(&vdi_params);
  311. }
  312.